1. Field of the Invention
The present invention relates generally to servers and their configuration and, more particularly, to a server configuration tool.
2. Background of the Invention
Computer servers are widely used in many computer installations. A computer server, forming part of a network of computer servers (hereinafter “servers”) and computer clients (hereinafter “clients”), will receive requests for data, provide a wide variety of data processing services and transmit data to clients and other servers.
Servers, operating or being deployed on a computer system, provide a multitude of functions and services to other servers and other computer clients. A computer system may operate to act as a single server or may enable a number of servers to operate, independently.
Some well known types of servers include, for example, print servers (which provide printing services to other servers and/or clients), web servers (which provide web page services to connected computers), file servers (which provide file access and file storage services), application servers (which may provide business logic or application delivery services), database servers (which provide for the storage of databases and/or database management services) as well as many others.
Generically, a server will enable another computer (whether another server or a client) to process (e.g., running or execution, storage, handling, etc.) user code. User code can be any type of data such as executable code, files, databases and the like.
As will be understood by those of ordinary skill in the art, there numerous type of environments in which a server may be deployed. Examples of different operating environment variables which may affect the operation of a server include: whether a server may be one of many servers operating on a single computer system; the location in the network of a server; the location of files on the computer system or the network; the operating system being employed on the computer system in which the server is deployed; the user code the server is to process; as well as many parameters and variables. In order to reflect the variety of environments in which a server may be deployed, a server is typically configured in order to operate properly on the computer system on which the server will be deployed (i.e., located and executed).
However, there are large numbers of computer systems and servers which are employed in large networks. For example, an electronic business (e-business) network may include literally hundreds, and perhaps thousands of servers interconnected via some network such as, for example, the Internet. Accordingly, each server in this e-business network (and other networks) needs to be configured (which is usually performed through use of a configuration file which comprises, typically, text describing the configuration) so that the server operates as required. The configuration of a server is dependent upon both the computer system in which the server is operating and the user code which is to be deployed on the server.
As can be expected, due to the numerous changes made to both hardware and software in typical network environments, existing servers often need to be reconfigured and new servers need to configured and deployed. Accordingly, information technology (IT) departments in many large organizations spend inordinate amounts of time maintaining the configuration of the various servers. Presently, this maintenance work is typically performed manually and individually on each computer system. Some attempts have been made to reduce this maintenance workload by configuring each individual computer system identically. Unfortunately this approach to reduce workload reduces the flexibility of the network in which those identical computer systems operate.
In another shortcoming of present server configuration tools, when user code needs to be deployed on multiple servers (which may require the configuring hundreds of servers) on multiple computers, the task of deploying individual configurations for each server (in order to maintain network flexibility) is time consuming, prone to errors and costly.
In a further shortcoming, configurations for similarly (although not identically) deployed servers cannot be easily transferred between servers. This difficulty results from the required manual editing of the configuration file which must be performed on the server receiving a copy of a configuration file. This editing is tedious and, due to its technical nature, requires a technician with a fairly sophisticated understanding of the server, the computer system in which the server is deployed and the user code on which the server will operate. Locating and hiring personnel to perform and support such a task can be difficult for many organizations.
Additionally, known configuration tools require a user to manually transfer a server configuration and the server application (e.g., a web server application) to a remote server which requires configuration.
Accordingly, a server configuration tool which addresses, at least in part, some of these shortcomings is desired.